package com.youth.koodoReaderManager.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;

import java.util.Date;

@Data // Lombok注解，生成getter、setter等方法
@Accessors(chain = true) // Lombok注解，支持链式调用
@TableName("koodo_dict_history") // MyBatis Plus注解，指定映射的数据库表名
public class DictHistory {
    @TableId(value = "key", type = IdType.AUTO) // MyBatis Plus注解，指定主键字段和生成策略
    @TableField("key") // MyBatis Plus注解，映射到数据库表的列名
    @ApiModelProperty(value = "字典历史的ID", required = true) // Swagger注解，描述字段
    private Integer key;

    @TableField("book_key") // MyBatis Plus注解，映射到数据库表的列名
    @ApiModelProperty(value = "所属的书籍的键") // Swagger注解，描述字段
    private Integer bookKey;

    @TableField("date_info") // MyBatis Plus注解，映射到数据库表的列名
    @ApiModelProperty(value = "笔记的添加日期") // Swagger注解，描述字段
    private DateInfo dateInfo; // 存储日期信息的嵌套类

    @TableField("word") // MyBatis Plus注解，映射到数据库表的列名
    @ApiModelProperty(value = "查询的单词") // Swagger注解，描述字段
    private String word;

    @TableField("chapter") // MyBatis Plus注解，映射到数据库表的列名
    @ApiModelProperty(value = "单词所在的章节") // Swagger注解，描述字段
    private String chapter;

    public DictHistory(Integer bookKey, String word, String chapter) {
        this.bookKey = bookKey;
        this.dateInfo = new DateInfo(); // 初始化日期信息
        this.word = word;
        this.chapter = chapter;
    }

    // 嵌套的日期信息类
    public static class DateInfo {
        private int year; // 年份
        private int month; // 月份
        private int day; // 日期

        public DateInfo() {
            this.year = new Date().getYear();
            this.month = new Date().getMonth() + 1;
            this.day = new Date().getDate();
        }

        // 省略getter和setter方法，由Lombok自动生成
    }

    // 构造函数、getter和setter方法 (由Lombok的@Data注解自动生成)
}